package com.miage.itrading.client;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;

@SuppressWarnings("deprecation")
public class MenuWidget extends GenericWidget {

	private final String separateur;
	private HorizontalPanel menu;

	public MenuWidget(ItradingAffichage context, String uid) {
		super(context, uid);
		separateur = " >> ";
	}

	public MenuWidget(ItradingAffichage context, String uid, String separateur) {
		super(context, uid);
		this.separateur = separateur;
	}

	public void configureWidget() {

	}

	public Widget createWidget() {
		menu = new HorizontalPanel();
		menu.setSpacing(5);
		return menu;
	}

	public int getNombreItems() {
		return (menu.getWidgetCount() - 1) / 2;
	}

	public void initialise() {
		menu.clear();

		Anchor accueil = new Anchor("Accueil");

		accueil.addClickHandler(new ClickHandler() {

			public void onClick(ClickEvent event) {
				context.afficheAccueil();
			}
		});

		menu.add(accueil);
	}

	/**
	 * Supprimer le dernier item du menu (également le séparateur)
	 */
	public void popItem() {
		if (menu.getWidgetCount() > 1) {
			menu.remove(menu.getWidgetCount());
			menu.remove(menu.getWidgetCount());
		}
	}

	public void pushItem(String item, ClickHandler click) {
		Anchor itemA = new Anchor(item);

		if (click != null) {
			itemA.addClickHandler(click);
		}

		menu.add(new Label(separateur));
		menu.add(itemA);
	}

	public void supprime(int item) {
		if ((item > 0) && (item <= getNombreItems())) {
			if (item == getNombreItems()) {
				popItem();
			} else {
				/**
				 * Supprimer l'item et le séparateur
				 */
				menu.remove((item + 1) * 2);
				menu.remove((item + 1) * 2 - 1);
			}
		}
	}
}
